<?php
    // +----------------------------------------------------------------------
    // | 海豚PHP框架 [ DolphinPHP ]
    // +----------------------------------------------------------------------
    // | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
    // +----------------------------------------------------------------------
    // | 官方网站: http://dolphinphp.com
    // +----------------------------------------------------------------------
    // | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
    // +----------------------------------------------------------------------

    namespace app\common\behavior;

    use app\admin\model\Config as ConfigModel;
    use app\admin\model\Module as ModuleModel;
    use think\facade\Env;

    /**
     * 初始化配置信息行为
     * 将系统配置信息合并到本地配置
     *
     * @package app\common\behavior
     * @author  CaiWeiMing <314013107@qq.com>
     */
    class Config
    {
        /**
         * 执行行为 run方法是Behavior唯一的接口
         *
         * @access public
         *
         * @param mixed $params 行为参数
         *
         * @return void
         */
        public function run()
        {
            // 如果是安装操作，直接返回
            if (defined('BIND_MODULE') && BIND_MODULE === 'install') return;

            // 获取当前模块名称
            $module = \think\facade\Env::get('module');

            // 定义模块资源目录
            config('tpl_replace_string.__MODULE_CSS__', \think\facade\Env::get('root_path') . 'public/' . 'static/' . $module . '/css');
            config('tpl_replace_string.__MODULE_JS__', \think\facade\Env::get('root_path') . 'public/' . 'static/' . $module . '/js');
            config('tpl_replace_string.__MODULE_IMG__', \think\facade\Env::get('root_path') . 'public/' . 'static/' . $module . '/img');
            config('tpl_replace_string.__MODULE_LIBS__', \think\facade\Env::get('root_path') . 'public/' . 'static/' . $module . '/libs');
            // 静态文件目录
            config('public_static_path', \think\facade\Env::get('root_path') . 'public/' . 'static/');

            // 读取系统配置
            $system_config = cache('system_config');
            if (!$system_config) {
                $ConfigModel = new ConfigModel();
                $system_config = $ConfigModel->getConfig();
                // 所有模型配置
                $module_config = ModuleModel::where('config', 'neq', '')->column('config', 'name');
                foreach ($module_config as $module_name => $config) {
                    $system_config[strtolower($module_name) . '_config'] = json_decode($config, true);
                }

                // 非开发模式，缓存系统配置
                if ($system_config['develop_mode'] == 0) {
                    cache('system_config', $system_config);
                }
            }

            // 设置配置信息
            foreach ($system_config as $key => $item) {
                \think\facade\Config::set('app.' . $key, $item);
            }
        }
    }
